package persistencia;

import java.io.BufferedWriter;
import java.io.File;

import java.io.FileWriter;
import java.io.IOException;
import java.io.Writer;
import java.util.ArrayList;

import modelo.Escenario;
import modelo.Nivel;

/**
 * 
 * Esta clase contiene metodos estaticos que encapsulan la serializacion de las
 * clases que conforman el estado del juego.
 * 
 */
public class Administrador {

	public static void guardarEstado(Nivel nivel, String path) {
		File file = new File(path);
		// El estado del juego se compone de dos objetos, el nivel y el
		// escenario
		ArrayList<Object> estadoJuego = new ArrayList<Object>();
		estadoJuego.add(0, Escenario.getInstance());
		estadoJuego.add(1, nivel);
		String xmlText = XMLUtils.getXML(estadoJuego);
		try {
			Writer output = new BufferedWriter(new FileWriter(file));
			output.write(xmlText);
			output.close();
		} catch (IOException e) {
			System.out.println("No pude guardar el estado");
			e.printStackTrace();
		}

		System.out.println("Guardado el estado en " + path);
	}

	public static Nivel cargarEstado(String path) {
		try {
			@SuppressWarnings("unchecked")
			ArrayList<Object> estadoJuego = (ArrayList<Object>) XMLUtils
					.objectFromXMLFile(path);
			Escenario escenario = (Escenario) estadoJuego.get(0);
			Nivel nivel = (Nivel) estadoJuego.get(1);
			Escenario.set(escenario);
			return nivel;
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}

}
